<?php

class ActionsDeCommunication extends CI_Controller
{
	public function __construct()
	{
		parent::__construct();
		
		$this->load->model('ActionsDeCommunication/ActionDeCommunication');
		$this->load->model('ActionsDeCommunication/Forum');
		$this->load->model('ActionsDeCommunication/Theme');
		$this->load->model('ActionsDeCommunication/Etat');
		$this->load->model('ActionsDeCommunication/FicheAction');
		$this->load->model('ActionsDeCommunication/Parametre');
		$this->load->model('Utilisateurs/Enseignant');
		$this->load->model('Utilisateurs/Participe');
		$this->load->model('Utilisateurs/AttenteAction');
		$this->load->model('Utilisateurs/Etudiants');
		$this->load->model('MailManager');
		
		include model_chemin('fonctions');
		include model_chemin('get_annee_scolaire');
	}
	
	public function index()
	{
		$this->voirActions();
	}
	
	public function voirActions($type = null, $filtre = null, $anneeScolaire = null)
	{
		include model_chemin('putDateJJMMAAAA');
		
		if(isset($_SESSION['utilisateurRole']))
			$role = $_SESSION['utilisateurRole'];
		
		if($anneeScolaire == null)
		{
			
			if(isset($_POST['archive']) && $_POST['archive'] != '')
			{
				$anneeScolaire = $_POST['archive'];
			}
			else
			{
				$date = new DateTime();
				$anneeScolaire = get_annee_scolaire($date->format('d/m/Y'));
			}
		}
		
		if($filtre != null || isset($_SESSION['filtreAction']))
		{
			if($filtre == null)
				$filtre = $_SESSION['filtreAction'];
			if(!isset($role) || $role == 'etudiant') 
				$data['actions'] = ActionDeCommunication::findAll(ActionDeCommunication::findWhere('ALL'), $filtre, $anneeScolaire);
			else
				$data['actions'] = ActionDeCommunication::findAll(null, $filtre, $anneeScolaire);
			$_SESSION['filtreAction'] = $filtre;
		}
		else
		{
			if(!isset($role) || $role == 'etudiant')
				$data['actions'] = ActionDeCommunication::findAll(ActionDeCommunication::findWhere('ALL'), null, $anneeScolaire);
			else
				$data['actions'] = ActionDeCommunication::findAll(null, null, $anneeScolaire);	
		}
			
		$data['onglet_ouvert'] = 'actiondecommunication';
		$data['erreur'] = $this->session->flashdata('erreur');
		$data['message'] = $this->session->flashdata('message');
		$data['url'] = 'index.php/ActionsDeCommunication/voirActions/adc/';
		$data['allAnneeScolaire'] = ActionDeCommunication::getAnneesScolaire();
		$data['anneeScolaire'] = $anneeScolaire;

		$this->load->view('Global/entete.php', $data);
		
		if($anneeScolaire == get_annee_scolaire((new DateTime())->format('d/m/Y')))
 			$this->load->view('ActionsDeCommunication/v_voirActions.php', $data);
		else
			$this->load->view('ActionsDeCommunication/v_voirActionsArchivees.php', $data);
		$this->load->view('Global/piedpage.php');
	}
	
	public function detailAction($id)
	{
		$data['onglet_ouvert'] = 'actiondecommunication';
		$data['erreur'] = $this->session->flashdata('erreur');
		$data['message'] = $this->session->flashdata('message');
		$data['afficherBouton'] = null;
		$data['contacter'] = null;
		
		if ($data['action'] = ActionDeCommunication::findById(secur($id, 'int')))
		{
			include model_chemin('putDateJJMMAAAA');
			$data['etudiants'] = ActionDeCommunication::findEtudiants(secur($id, 'int'));
			if(isset($_SESSION['utilisateurRole']))
			{
				$data['utilisateur'] = unserialize($_SESSION['utilisateur']);
				$utilisateur = unserialize($_SESSION['utilisateur']);
				if($_SESSION['utilisateurRole'] == 'etudiant')
				{
					if($data['etudiants']!=null)
					{
						foreach($data['etudiants'] as $etudiant)
				 		{
				 			if((isset($data['afficherBouton']) && $data['afficherBouton']!='Desinscription') || !isset($data['afficherBouton']))
					 			if($data['afficherBouton']!='Desinscription')
					 			{
					 				if($etudiant->getId() == $utilisateur->getId() && ($data['action']->getEtat()->getLibelle() == 'Ouvert' || $data['action']->getEtat()->getLibelle() == 'Complet'))
						 				$data['afficherBouton'] = 'Desinscription';
						 			else 
						 			{
						 				if($data['action']->getEtat()->getLibelle() == 'Ouvert')
						 					$data['afficherBouton'] = 'Inscription';
						 				elseif ($data['action']->getEtat()->getLibelle() == 'Complet' && !$data['action']->is_attenteADC($utilisateur->getId()))
						 					$data['afficherBouton'] = 'ListeAttente';
						 				elseif ($data['action']->getEtat()->getLibelle() == 'Complet' && $data['action']->is_attenteADC($utilisateur->getId()))
						 				{
						 					$data['rang']=$data['action']->rangAttenteADC($utilisateur->getId());
						 					$data['afficherBouton'] = 'DesinscriptionListeAttente';
						 				}
						 			}
					 			}
				 			if($etudiant->getId() == $utilisateur->getId() && $data['action']->getEtat()->getLibelle() == 'Terminé' && FicheAction::findByIdAction($data['action']->getId()) == false)
				 				$data['afficherBouton'] = 'FicheActionRemplir';
				 			else if ($etudiant->getId() == $utilisateur->getId() && $data['action']->getEtat()->getLibelle() == 'Terminé' && Participe::getEtuConfirm($data['action']->getId(),$utilisateur->getId()) == null )
				 				$data['afficherBouton'] = 'FicheActionConfirmer';
				 			
				 			if($etudiant->getId() == $utilisateur->getId())
				 				$data['contacter'] = 'etudiant';
				 		}
				 	}
			 		if($data['etudiants']==null && $data['action']->getEtat()->getLibelle() == 'Ouvert')
			 			$data['afficherBouton'] = 'Inscription';
				}
				else
				{
					if($data['action']->getEnseignant() == null && ($data['action']->getEtat()->getLibelle() == 'Ouvert' || $data['action']->getEtat()->getLibelle() == 'Complet'))
						$data['afficherBouton'] = 'Inscription';
						
					if($_SESSION['utilisateurRole'] == 'administrateur')
					{
						$data['afficherBoutonAdmin'] = '';
						if($data['action']->getEtat()->getLibelle() == 'Ouvert' || $data['action']->getEtat()->getLibelle() == 'Complet' || $data['action']->getEtat()->getLibelle() == 'Non validée')
							$data['afficherBoutonAdmin'] = 'Administration';
						elseif($data['action']->getEtat()->getLibelle() == 'Terminé' || $data['action']->getEtat()->getLibelle() == 'Noté')
							$data['afficherBoutonAdmin'] = 'A noter';
						$data['contacter'] = 'administrateur';
						if($data['action']->getEnseignant() != null && $data['action']->getEnseignant()->getLogin() == $utilisateur->getLogin())
							$data['contacter'] = 'enseignant';
									
						if(FicheAction::findByIdAction($id))
							$data['afficherBoutonGenererPDF'] = true;
						else
							$data['afficherBoutonGenererPDF'] = false;
						$data['contacter'] = 'administrateur';						
					}	

					if($data['action']->getEnseignant() != null && $data['action']->getEnseignant()->getLogin() == $utilisateur->getLogin())
						$data['contacter'] = 'enseignant';
				}
				$this->load->view('Global/entete.php', $data);
				$this->load->view('ActionsDeCommunication/v_detailAction.php', $data);
				$this->load->view('Global/piedpage.php');
			}
			else
				redirect(base_url().'index.php/welcome/erreur404');
		}
		else
		{
			$this->session->set_flashdata('erreur', 'L\'action de communication demandée n\'existe pas.');
			$this->voirActions();
		}		
	}
	
	public function inscription($id)
	{
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$action = ActionDeCommunication::findById(secur($id, 'int'));
		if($_SESSION['utilisateurRole'] == 'etudiant')
			$action->inscrireADC($utilisateur->getId());
		else
			$action->inscrireEnseignantADC($utilisateur->getLogin());
		
		$this->session->set_flashdata('message', 'Vous avez bien été inscrit à l\'action de communication');
		
		if($action->getTitre()==Forum::LUNDI || $action->getTitre()==Forum::LUNDI2)
			redirect(base_url().'index.php/LundisInfo/voirLundisInfo/'.$id);
		else
			redirect(base_url().'index.php/ActionsDeCommunication/detailAction/'.$id);
	}
	
	public function desinscription($id)
	{
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$action = ActionDeCommunication::findById(secur($id, 'int'));
		$action->desinscrireADC($utilisateur->getId());
		
		$this->session->set_flashdata('message', 'Vous avez bien été désinscrit de l\'action de communication');
		
		if($action->getTitre()==Forum::LUNDI || $action->getTitre()==Forum::LUNDI2)
			redirect(base_url().'index.php/LundisInfo/voirLundisInfo/'.$id);
		else
			redirect(base_url().'index.php/ActionsDeCommunication/detailAction/'.$id);
	}
	
	public function inscriptionAttente($id)
	{
		$action = ActionDeCommunication::findById(secur($id, 'int'));
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$action->inscrireAttenteADC($utilisateur->getId());
	
		$this->session->set_flashdata('message', 'Vous avez bien été inscrit à la liste d\'attente.');
	
		redirect(base_url().'index.php/ActionsDeCommunication/detailAction/'.$id);
	}
	
	public function desinscriptionAttente($id)
	{
		$action = ActionDeCommunication::findById(secur($id, 'int'));
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$action->desinscrireAttenteADC($utilisateur->getId());
	
		$this->session->set_flashdata('message', 'Vous avez bien été désinscrit de la liste d\'attente.');
	
		redirect(base_url().'index.php/ActionsDeCommunication/detailAction/'.$id);
	}
	
	public function mesActions($type = null, $filtre = null)
	{
		if(isset($_SESSION['utilisateurRole']))
		{
			$utilisateur = unserialize($_SESSION['utilisateur']);
			$data['onglet_ouvert'] = '';
			$data['mesActions'] = '';
			if($_SESSION['utilisateurRole'] == 'etudiant')
			{
				if(($type == 'adc' && $filtre != null))
				{
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getId(), $_SESSION['utilisateurRole'], $filtre);
					$_SESSION['filtreAction'] = $filtre;
				}
				elseif(isset($_SESSION['filtreAction']))
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getId(), $_SESSION['utilisateurRole'], $_SESSION['filtreAction']);
				else
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getId(), $_SESSION['utilisateurRole']);
				
				if(($type == 'forum' && $filtre != null))
				{
					$data['forums'] = Forum::findAll(secur(0, 'int'), Forum::ID_ETUDIANT1_FORUM.' = '.$utilisateur->getId().' OR '.Forum::ID_ETUDIANT2_FORUM.' = '.$utilisateur->getId(), $filtre);
					$_SESSION['filtreForum'] = $filtre;
				}
				elseif(isset($_SESSION['filtreForum']))
					$data['forums'] = Forum::findAll(secur(0, 'int'), Forum::ID_ETUDIANT1_FORUM.' = '.$utilisateur->getId().' OR '.Forum::ID_ETUDIANT2_FORUM.' = '.$utilisateur->getId(), $_SESSION['filtreForum']);
				else
					$data['forums'] = Forum::findAll(secur(0, 'int'), Forum::ID_ETUDIANT1_FORUM.' = '.$utilisateur->getId().' OR '.Forum::ID_ETUDIANT2_FORUM.' = '.$utilisateur->getId());
			}
			else
			{
				if(($type == 'adc' && $filtre != null))
				{
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getLogin(), $_SESSION['utilisateurRole'], $filtre);
					$_SESSION['filtreAction'] = $filtre;
				}
				elseif(isset($_SESSION['filtreAction']))
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getLogin(), $_SESSION['utilisateurRole'], $_SESSION['filtreAction']);
				else
					$data['actions'] = ActionDeCommunication::findByUser($utilisateur->getLogin(), $_SESSION['utilisateurRole']);
				
				if(($type == 'forum' && $filtre != null))
				{
					$data['forums'] = Forum::findAll(secur(0, 'int'), 'e.'.Forum::LOGIN_ENSEIGNANT_FORUM.' = "'.$utilisateur->getLogin().'"', $filtre);
					$_SESSION['filtreForum'] = $filtre;
				}
				elseif(isset($_SESSION['filtreForum']))
					$data['forums'] = Forum::findAll(secur(0, 'int'), 'e.'.Forum::LOGIN_ENSEIGNANT_FORUM.' = "'.$utilisateur->getLogin().'"', $_SESSION['filtreForum']);
				else
	 				$data['forums'] = Forum::findAll(secur(0, 'int'), 'e.'.Forum::LOGIN_ENSEIGNANT_FORUM.' = "'.$utilisateur->getLogin().'"');
			}
			
			include model_chemin('putDateJJMMAAAA');
			include model_chemin('putHoraireHHhMM');
			
			$this->load->view('Global/entete.php', $data);
			$this->load->view('ActionsDeCommunication/v_mesActions.php', $data);
			$this->load->view('Global/piedpage.php');
		}
		else
			redirect(base_url().'index.php/welcome/erreur404');
			
	}
	
	public function mesBonus()
	{
		if(isset($_SESSION['utilisateurRole']) && $_SESSION['utilisateurRole'] == 'etudiant')
		{			
			$etudiant = unserialize($_SESSION['utilisateur']);
			$data['onglet_ouvert'] = 'mesbonus';
			$data['actions'] = ActionDeCommunication::findByUser($etudiant->getId(), $_SESSION['utilisateurRole']);
			$data['forums'] = Forum::findAll(secur(0, 'int'), Forum::ID_ETUDIANT1_FORUM.' = '.$etudiant->getId().' OR '.Forum::ID_ETUDIANT2_FORUM.' = '.$etudiant->getId());
			$data['notes'] = Participe::getNotes($etudiant->getId());
			$data['etudiant'] = $etudiant;
			$data['url'] = 'index.php/ActionsDeCommunication/mesBonus/';
			
			$this->load->view('Global/entete.php', $data);
			$this->load->view('ActionsDeCommunication/v_pointsBonus.php', $data);
			$this->load->view('Global/piedpage.php');
		}
		else
			redirect(base_url().'index.php/welcome/erreur404');
	}
	
	public function proposerAction()
	{
		if(isset($_SESSION['utilisateurRole']) && $_SESSION['utilisateurRole'] == 'etudiant')
		{
			$data['theme']          = Theme::findAll();
			$data['flash'] 			= $this->session->flashdata('message');
			$data['titre'] 			= $this->session->flashData('titre');
			$data['dateA'] 			= $this->session->flashData('date');
			$data['nbEtudiants'] 	= $this->session->flashData('nbEtudiants');
			$data['commentaire'] 	= $this->session->flashData('commentaire');
			$this->load->view('Global/entete.php');
			$this->load->view('ActionsDeCommunication/v_proposerAction.php', $data);
			$this->load->view('Global/piedpage.php');
		}
		else
			redirect(base_url().'index.php/welcome/erreur404');
	}
	
	public function propositionAction()
	{
		if(ActionDeCommunication::checkProposition($_POST['TitreAction'], $_POST['Theme'], $_POST['Date'], $_POST['NbEtudiants'], $_POST['Commentaire']))
		{
			ActionDeCommunication::addADC(secur($_POST['TitreAction'], 'string'), secur($_POST['Commentaire'], 'string'), $_POST['Date'], null, $_POST['NbEtudiants'], null, null, $_POST['Theme'], 6, 0);
			
			$mail = new MailManager();
			$mail->setFileName('proposition_adc');
			$mail->load();
			$information['action'] = ActionDeCommunication::findbyId(ActionDeCommunication::lastId());
			$mail->translate($information);
			$e = $mail->send('alexandre.lesage.1@gmail.com', 'gestionADC@noreply.com');
			
			$this->session->set_flashdata('message', 'L\'action a bien été proposée.');
			redirect(base_url().'index.php/ActionsDeCommunication/voirActions');
		}
		else 
		{
			$this->session->set_flashData('titre', $_POST['TitreAction']);
			$this->session->set_flashData('date', $_POST['Date']);
			$this->session->set_flashData('nbEtudiants', $_POST['NbEtudiants']);
			$this->session->set_flashData('commentaire', $_POST['Commentaire']);
			redirect(base_url().'index.php/ActionsDeCommunication/proposerAction');
		}
			
	}
	
	/**
	 * @param unknown $type soit etudiant soit enseignant soit all
	 * @param unknown $identifiant soit id etudiant soit login enseignant soit all
	 * @param int $id id de l'action
	 */
	public function contacter($type, $identifiant, $id)
	{
		if(isset($_SESSION['utilisateurRole']))
		{
			if($action = ActionDeCommunication::findById(secur($id, 'int')))
			{
				$utilisateur = unserialize($_SESSION['utilisateur']);
				$etudiants = ActionDeCommunication::findEtudiants(secur($id, 'int'));
				
				$autorise = false;
				if($_SESSION['utilisateurRole'] == 'etudiant')
				{
					// vérifie que l'utilisateur appartient bien à l'action
					if($etudiants)
						foreach($etudiants as $etudiant)
				 		{
				 			if($etudiant->getId() == $utilisateur->getId())
				 				$autorise = true;
				 		}
			 		if(!$autorise)
			 			redirect(base_url().'index.php/welcome/erreur404');
				}
				else
				{
					// vérifie que l'utilisateur appartient bien à l'action ou qu'il s'agit de l'administrateur
					
					if($action->getEnseignant()->getLogin() == $utilisateur->getLogin() || $_SESSION['utilisateurRole'] == 'administrateur')
						$autorise = true;
					if(!$autorise)
			 			redirect(base_url().'index.php/welcome/erreur404');						
				}
				
				if($type == 'etudiant')
					$destinataire[] = Etudiants::findById(secur($identifiant, 'int'))->getMail();
				elseif($type == 'enseignant')
					$destinataire[] = $action->getEnseignant()->getMail();
				elseif($type == 'all')
				{
					if($_SESSION['utilisateurRole'] == 'etudiant')
					{
						if($etudiants)
							foreach($etudiants as $etudiant)
							{
								if($utilisateur->getId() != $etudiant->getId())
									$destinataire[] = $etudiant->getMail();
							}
						if($action->getEnseignant() != null)
							$destinataire[] = $action->getEnseignant()->getMail();
					}
					else
					{
						if($etudiants)
							foreach($etudiants as $etudiant)
								$destinataire[] = $etudiant->getMail();
						if($_SESSION['utilisateurRole'] == 'administrateur' && $action->getEnseignant() != null && $action->getEnseignant()->getLogin() != $utilisateur->getLogin())
							$destinataire[] = $action->getEnseignant()->getMail();
					}
				}
				else
					redirect(base_url().'index.php/welcome/erreur404');
				
				if($destinataire == null)
					redirect(base_url().'index.php/welcome/erreur404');
				
				$_SESSION['destinataire'] = $destinataire;
				$_SESSION['objet'] =  'Action de communication : '.$action->getTitre();

				$this->load->view('Global/entete.php');
				$this->load->view('Contact/v_contact.php');
				$this->load->view('Global/piedpage.php');
			}
			else
				redirect(base_url().'index.php/welcome/erreur404');
		}
		else
			redirect(base_url().'index.php/welcome/erreur404');
	}
}
?>